<?php
// +----------------------------------------------------------------------
// | 授权系统 - 验证日志模型
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace common\models\system;

use yii\db\ActiveRecord;

/**
 * 授权验证日志模型
 * 
 * @property int $id 日志ID
 * @property int $license_id 授权ID
 * @property string $license_key 授权码
 * @property string $validate_type 验证类型
 * @property int $validate_result 验证结果
 * @property string $error_code 错误码
 * @property string $error_msg 错误信息
 * @property string $request_domain 请求域名
 * @property string $request_ip 请求IP
 * @property string $request_machine_code 请求机器码
 * @property string $request_data 请求数据
 * @property string $response_data 响应数据
 * @property string $user_agent User Agent
 * @property string $sdk_version SDK版本
 * @property string $product_version 产品版本
 * @property int $validate_time 验证耗时
 * @property int $is_abnormal 是否异常
 * @property string $created_at 创建时间
 */
class LicenseLog extends ActiveRecord
{
    public static function tableName()
    {
        return '{{%sys_license_log}}';
    }
    
    public function rules()
    {
        return [
            [['license_key'], 'required'],
            [['license_id', 'validate_result', 'validate_time', 'is_abnormal'], 'integer'],
            [['error_msg', 'request_data', 'response_data', 'user_agent'], 'string'],
            [['created_at'], 'safe'],
            [['validate_type', 'error_code', 'sdk_version', 'product_version'], 'string', 'max' => 50],
            [['license_key', 'request_domain', 'request_machine_code'], 'string', 'max' => 255],
            [['request_ip'], 'string', 'max' => 50],
        ];
    }
    
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'license_id' => '授权ID',
            'license_key' => '授权码',
            'validate_type' => '验证类型',
            'validate_result' => '验证结果',
            'error_code' => '错误码',
            'error_msg' => '错误信息',
            'request_domain' => '请求域名',
            'request_ip' => '请求IP',
            'request_machine_code' => '机器码',
            'validate_time' => '验证耗时(ms)',
            'is_abnormal' => '异常',
            'created_at' => '验证时间',
        ];
    }
    
    /**
     * 关联授权
     */
    public function getLicense()
    {
        return $this->hasOne(License::class, ['id' => 'license_id']);
    }
}

